HITL 与 steering
四种介入模式、中断恢复机制、不重启纠偏与 kill switch 的设计
核心要点:
- HITL 四模式:approve / edit / reject / respond
- 中断分静态与动态,可持久等待
- steering 核心是"不重启"纠偏
- 纠偏 / 覆盖 / 取消三种手势要区分
- kill switch 需多级 + 回滚,非简单停进程
本文讲运行中的人机协作。执行前的权限审批见 02-权限与审批。
人在哪些点介入 agent?
核心问题:human-in-the-loop 具体在 agent 流程的哪些位置插手?
四种介入模式:批准、编辑、拒绝、回应[1]。LangGraph 把人工介入标准化为这四类动作,覆盖从轻到重的干预。
- approve(批准):放行一个待执行的操作。
- edit(编辑):修改 agent 的提议再执行。
- reject(拒绝):否决并要求重来。
- respond(回应):回答 agent 的提问、补充信息。
这些介入点通过中断机制实现,状态持久化在 checkpointer 中可无限期等待人响应。可借鉴的判断:介入不是只有"批准/拒绝",编辑和回应让人能精修而非推倒重来。
怎么中断又能恢复?
核心问题:让 agent 停下等人,之后怎么无损接着跑?
用中断 + checkpoint:静态或动态触发中断,状态落盘,人响应后从断点恢复[1]。LangGraph 提供两类中断:编译期的静态中断和运行时的动态 interrupt(),都通过 Command(resume=...) 恢复。
关键是状态持久化(04-编排/06-长任务与状态 的 checkpoint 机制):中断后状态存在 checkpointer 里,可以无限期等待——人下班了明天再批也不丢状态。这把"等人"从阻塞变成可持久挂起。可借鉴的设计:中断要配持久化,否则等人就意味着占着资源空转。
运行中怎么纠偏不重启?
核心问题:agent 跑偏了,但已经干了不少活,怎么纠正又不浪费?
steering 的核心是"不重启"——用 checkpoint-and-inject 保留已完成工作,注入修正指令[2]。直接 kill 重来会丢掉所有进展,steering 让纠偏成本降到最低。
三种机制:checkpoint-and-inject 保留已完成工作并注入新指令、把计划变成可编辑的一等对象、在工具调用间轮询修正指令。UX 上要区分三种手势:纠偏(微调方向)、覆盖(改目标)、取消(中止)——混为一谈会导致用户想微调却误删了有效工作。可借鉴的判断:给 steering 设计专门的"不丢工作"路径,而非只有"重启"一个选项。
怎么安全停掉 agent?
核心问题:真要紧急停掉 agent,直接杀进程行吗?
不行——kill switch 需要多级 + 回滚,因为简单停进程处理不了已完成的副作用。agent 可能已经写了文件、发了请求,杀进程止不住这些已发生的影响。
有效的 kill switch 分多级(任务级 / agent 级 / 系统级),配合回滚注册表和审计日志:停下来还要能撤销已造成的副作用。这与 02-权限与审批 的"不可逆操作每次确认"互补——前者防患于未然,kill switch 兜底于已然。可借鉴的原则:停止能力要覆盖"已完成的副作用",不能只是终止执行。
Takeaway
| 知识点 | 核心结论 |
|---|---|
| HITL 四模式 | approve / edit / reject / respond,从轻到重 |
| 中断恢复 | 静态/动态中断 + checkpoint 持久化,可无限期等人 |
| steering | checkpoint-and-inject 不重启纠偏,保留已完成工作 |
| 三种手势 | 纠偏 / 覆盖 / 取消要区分,防误删有效工作 |
| kill switch | 多级 + 回滚 + 审计,覆盖已完成副作用 |
参考资料
- LangChain. Making it easier to build human-in-the-loop agents with interrupt. 2025. https://www.langchain.com/blog/making-it-easier-to-build-human-in-the-loop-agents-with-interrupt
- Liu et al. Dive into Claude Code: The Design Space of Today's and Future AI Agent Systems. arXiv:2604.14228, 2026. https://arxiv.org/abs/2604.14228
延伸阅读
- 02-权限与审批 — 执行前的权限门
- 04-编排/06-长任务与状态 — 中断依赖的 checkpoint 机制